﻿/* 
 * File:   cs1237 dev.h
 * Author: aple
 *
 */

#ifndef CS1237_DEV_H
#define	CS1237_DEV_H

#ifdef	__cplusplus
extern "C" {
#endif

#include "stdint.h"
    
//当系统由 Power down 重新进入正常工作模式时，此时所有功能配置为 PowerDown 之前的状态，不需要进行功能配置。
typedef struct
{
    uint8_t st;       //外部自定义，内部没用
    uint8_t bits;     //外部设定,有效数据位数，不包含符号位
    uint8_t b_ad_val_ready;
    uint8_t buff_index; //内部更新
    uint8_t cfg_read;   //内部更新 - 调用读配置时更新
    uint8_t cfg_ext;    //外部设定 //cfg_read 不等 cfg_ext时不更新缓冲区及ad值
    int32_t ad_val;
    int32_t ad_real;
    int32_t ad_buff[5];
    uint32_t TimeCnt;  //外部自定义，内部没用
    uint32_t sample_ok_cnt;
    int32_t ad_temperature;
    int32_t ad_short_inner;
    
    int32_t ad_org;
    
    void (*sck_out)(uint8_t out);
    void (*dat_out)(uint8_t out);
    void (*dat_dir)(uint8_t out_or_in);
    uint8_t (*dat_in)(void);
    
    void  (*delay_0_5us)(uint8_t us); //延时0.5us
} cs1237_type;

/*****************************************************************************//*!
*
* @brief   reg set.//配置CS1237芯片
*
* @return  state 0-busy  1-ok
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
uint8_t cs1237_cfg_set(cs1237_type *obj, uint8_t cmd);

/*****************************************************************************//*!
*
* @brief   reg read.//读取芯片的配置数据
*
* @return  state 0-busy  1-ok
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
uint8_t cs1237_cfg_read(cs1237_type *obj);

/*****************************************************************************//*!
*
* @brief   ad read.//读取ADC数据，返回的是一个有符号数据
*
* @return  state 0-busy  1-ok
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
uint8_t cs1237_ad_read(cs1237_type *obj);

/*****************************************************************************//*!
*
* @brief   ad read.//读取ADC数据，并设定新的配置字，返回的是一个有符号数据
*
* @return  state 0-busy  1-ok
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
uint8_t cs1237_ad_read_and_set(cs1237_type *obj, uint8_t cmd);

#ifdef	__cplusplus
}
#endif

#endif	/* CS1237_DEV_H */

